/*******************************************************************************
 * This file is part of blueprint4j www.blueprint4j.org.
 * 
 *     blueprint4j is free software: you can redistribute it and/or modify
 *     it under the terms of the GNU Lesser General Public License as published by
 *     the Free Software Foundation, either version 3 of the License, or
 *     (at your option) any later version.
 * 
 *     blueprint4j is distributed in the hope that it will be useful,
 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *     GNU Lesser General Public License for more details.
 * 
 *     You should have received a copy of the GNU Lesser General Public License
 *     along with blueprint4j. If not, see <http://www.gnu.org/licenses/>.
 ******************************************************************************/
package blueprint4j.comm;

import java.util.Vector;

import blueprint4j.messages.*;

public class VectorDirectable implements Directable {
	private Vector store=new Vector();

	public Directable get(int pos){
		return (Directable)store.get(pos);
	}

	public void add(Directable item){
		store.add(item);
	}

	public boolean remove(Directable item){
		return store.remove(item);
	}

	public Directable remove(int pos){
		return (Directable) store.remove(pos);
	}

	public int size(){
		return store.size();
	}

	public void removeAllElements() {
		store.removeAllElements();
	}

	public Directable getNewInstance() {
		VectorDirectable vp = new VectorDirectable();
		for (int i =0;i < size();i++) {
			vp.add(((Directable)get(i)).getNewInstance());
		}
		return vp;
	}

	public void process(Packet packet,Message data)
	throws Throwable {
		for (int i =0;i < size();i++) {
			for (int e =0;e < get(i).getDirection().length;e++) {
				if (data.get(0).startsWith(get(i).getDirection()[e])) {
					get(i).process(packet,data);
				}
			}
		}
	}

	public String[] getDirection() {
		return new String[]{};
	}

}
